/* Copyright 2008 Bas van den Berg
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#include "Logger.h"
#include "Utils.h"

#include <stdio.h>
#include <stdarg.h>

using namespace Chronos;

const char* level2Str[] = {"DEBUG", "INFO", "WARN", "ERROR", "NONE"};

void Logger::log(LogLevel lvl, const std::string& msg) {
    if (lvl < level) return;
    printf("[%s - %u] %s\n", level2Str[lvl], Utils::getPulse(), msg.c_str());
}


void Logger::log(LogLevel lvl, const char* format, ...) {
    if (lvl < level) return;
    static char buffer[200];
    va_list(Args);
    va_start(Args, format);
    vsprintf(buffer, format, Args);
    va_end(Args);
    printf("[%s - %u] %s\n", level2Str[lvl], Utils::getPulse(), buffer);
}

LogLevel Logger::level = INFO;

